package Q10_11_Peaks_and_Valleys;
import CtCILibrary.AssortedMethods;
public class QuestionB {
public static void swap(int[] array, int left, int right) {
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
public static void sortValleyPeak(int[] array) {
for (int i = 1; i < array.length; i += 2) {
int biggestIndex = maxIndex(array, i - 1, i, i + 1);
if (i != biggestIndex) {
swap(array, i, biggestIndex);
}
}
}
public static int maxIndex(int[] array, int a, int b, int c) {
int len = array.length;
int aValue = a >= 0 && a < len ? array[a] : Integer.MIN_VALUE;
int bValue = b >= 0 && b < len ? array[b] : Integer.MIN_VALUE;
int cValue = c >= 0 && c < len ? array[c] : Integer.MIN_VALUE;
int max = Math.max(aValue, Math.max(bValue, cValue));
if (aValue == max) {
return a;
} else if (bValue == max) {
return b;
} else {
return c;
}
}
public static void main(String[] args) {
int[] array = {48, 40, 31, 62, 28, 21, 64, 40, 23, 17};
System.out.println(AssortedMethods.arrayToString(array));
sortValleyPeak(array);
System.out.println(AssortedMethods.arrayToString(array));
System.out.println(Tester.confirmValleyPeak(array));
}
}